package com.baoleme.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 * 订单表
 * </p>
 *
 * @author wuyunbin
 * @since 2024-09-13
 */
@Data
public class Orders implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键-订单号
     */
    private String id;

    /**
     * 绑定店铺id
     */
    @NotNull(message = "店铺id不能为空")
    private String shopId;

    /**
     * 订单状态 1待付款，2待派送，3已派送，4已完成，5已取消
     */
    @Range(min = 1, max = 7, message = "订单状态不正确")
    private Integer status;

    /**
     * 下单用户
     */
    @NotNull(message = "下单用户不能为空")
    private String memberId;

    /**
     * 下单时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime orderTime;

    /**
     * 结账时间
     */
    private LocalDateTime checkoutTime;

    /**
     * 支付方式 1微信,2支付宝
     */
    @Range(min = 1, max = 2, message = "支付方式不正确")
    private Integer payMethod;

    /**
     * 实收金额
     */
    @NotNull(message = "实收金额不能为空")
    private BigDecimal amount;

    /**
     * 备注
     */
    private String remark;

    /**
     * 收件人手机号
     */
    @NotNull(message = "收件人手机号不能为空")
    private String phone;

    /**
     * 收件地址
     */
    @NotNull(message = "收件地址不能为空")
    private String address;

    /**
     * 收货人姓名
     */
    @NotNull(message = "收件人姓名不能为空")
    private String consignee;

    /**
     * 取餐码
     */
    @NotNull(message = "取餐码不能为空")
    private String number;

    /**
     * 0-外卖 1-堂食
     */
    @Range(min = 0, max = 1, message = "外卖或堂食参数不正确")
    private Integer type;
}
